package demo01.List;

import java.util.ArrayList;
import java.util.List;

/*
    java.util.List接口 extends Collection接口
    List接口的特点:
        1.有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
        2.有索引,包含了一些带索引的方法
        3.允许存储重复的元素

    List接口中带索引的方法(特有)
        - public void add(int index, E element): 将指定的元素，添加到该集合中的指定位置上。
        - public E get(int index):返回集合中指定位置的元素。
        - public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
        - public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
    注意:
        操作索引的时候,一定要防止索引越界异常
        IndexOutOfBoundsException:索引越界异常,集合会报
        ArrayIndexOutOfBoundsException:数组索引越界异常
        StringIndexOutOfBoundsException:字符串索引越界异常
 */
public class Demo01List {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("String1");
        list.add("String2");
        list.add("String3");
        list.add("String4");
        System.out.println(list);//[String1, String2, String3, String4]
        // - public void add(int index, E element): 将指定的元素，添加到该集合中的指定位置上。
        list.add(1,"String1.5");
        System.out.println(list);//[String1, String1.5, String2, String3, String4]
        //  - public E get(int index):返回集合中指定位置的元素。
        System.out.println(list.get(3));//String3
        //- public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
        System.out.println(list.remove(4));//String4
        //- public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素
        System.out.println(list.set(1,"String1.6"));//String1.5
        System.out.println(list);

    }
}
